// #include <bits/stdc++.h>
// using namespace std;
// typedef long long ll;
// typedef pair<int, int> pii;
// const int mod = 1e9 + 7;

// int gcd(int a, int b)
// {
//     return b ? gcd(b, a % b) : a;
// }

// ll qmi(ll a, ll b)
// {
//     ll res = 1;
//     while(b)
//     {
//         if(b & 1)res = res * a % mod;
//         b >>= 1;
//         a = a * a % mod;
//     }
//     return res;
// }
// struct custom_hash {
// 	static uint64_t splitmix64(uint64_t x) {
// 		x ^= x << 13;
// 		x ^= x >> 7;
// 		x ^= x << 17;
// 		return x; 
// 	}
// 	size_t operator () (uint64_t x) const {
// 		static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
// 		return splitmix64(x + FIXED_RANDOM);
// 	}
// };
// int f[10] = {0, 0, 2, 6, 3, 2, 3, 6, 2, 0};


// void solve()
// {
//     string s;
//     cin >> s;
//     ll sum = 0;
//     for(auto ch : s) sum += (ch - '0');
    
//     if(sum % 9 == 0) {
//         cout << "YES" << endl;
//         return;
//     }
//     // cout << sum << ' ' << sum % 9 << endl;
//     map<int, int> mp;
//     for(auto ch : s) {
//         int t = ch - '0';
//         if(t > 3) continue;
//         mp[f[t]]++;
//     }
//     if(mp.count(9 - sum % 9)) {
//         cout << "YES" << endl;
//         return;
//     }
    
//     int t = 9 - sum % 9;
//     if(t == 1) {
//         if(mp[2] >= 5 || (mp[6] && mp[2] >= 2)){
//             cout << "YES" << endl;
//             return;
//         }
//         else cout << "NO" << endl;
//         return;
//     }
//     if(t == 2) {
//         if(mp[2] > 0) {
//             cout << "YES" << endl;
//         }
//         else cout << "NO" << endl;
//         return;
//     }
//     if(t == 3) {
//         if(mp[2] >= 6 || mp[6] >= 2 || (mp[6] && mp[2] >= 3)) {
//             cout << "YES" << endl;
//         }
//         else cout << "NO" << endl;
//         return;
//     }
//     if(t == 4) {
//         if(mp[2] >= 2) {
//             cout << "YES" << endl;
//         }
//         else cout << "NO" << endl;
//         return;
//     }
//     if(t == 5) {
//         if(mp[2] >= 7 || (mp[6] >= 2 && mp[2]) || (mp[2] >= 4) && mp[6]) {
//             cout << "YES" << endl;
//         }else{
//             cout << "NO" << endl;
//         }
//         return;
//     }
//     if(t == 6) {
//         if(mp[6] || mp[2] >= 3) {
//             cout << "YES" << endl;
//         }else{
//             cout << "NO" << endl;
//         }
//         return;
//     }
//     if(t == 7) {
//         if(mp[2] >= 8 || (mp[6] > 0 && mp[2] >= 5) || (mp[6] > 1 && mp[2] >= 2) ){
//             cout << "YES" << endl;
//         }
//         else cout << "NO" << endl;
//         return;
//     }
//     if(t == 8) {
//         if(mp[2] >= 4) {
//             cout << "YES" << endl;
//         }else if(mp[6] && mp[2]){
//             cout << "YES" << endl;
//         }
//         else cout << "NO" << endl;
//         return;
//     }

// }


// int main()
// {
//     int t;
//     cin >> t;
//     while(t--) solve();
//     return 0;
// }


#include <bits/stdc++.h>
using namespace std;

void solve(){
    string s;
    cin >> s;
    vector<int> f(10);
    f[0] = 1;
    for(int i = 0; i < s.size(); i++) {
        int t = s[i]  -'0';
        vector<int> tem(10);
        for(int j = 0; j < 9; j++) {
            int p;
            if(t <= 3) {
                p = (j + t * t) % 9;
                tem[p] |= f[j];
            }
            p = (j + t) % 9;
            tem[p] |= f[j];
        }
        f.swap(tem);
    }
    if(f[0]) cout << "YES\n";
    else cout << "NO\n";
}

int main() {
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}